home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
LANG
/
C
/
LIB
/
UNIXLIB37B
/
!UnixLib37
/
src
/
c
/
bsearch
< prev
next >
Wrap
Text File
|
1996-11-09
|
979b
|
45 lines
/****************************************************************************
*
* $Source: /unixb/home/unixlib/source/unixlib37/src/c/RCS/bsearch,v $
* $Date: 1996/04/19 21:26:42 $
* $Revision: 1.1 $
* $State: Rel $
* $Author: simon $
*
* $Log: bsearch,v $
* Revision 1.1 1996/04/19 21:26:42 simon
* Initial revision
*
***************************************************************************/
static const char rcs_id[] = "$Id: bsearch,v 1.1 1996/04/19 21:26:42 simon Rel $";
#include <sys/syslib.h>
#include <stddef.h>
#include <stdlib.h>
void *
bsearch (register const void *k, const void *v, register size_t n,
register size_t z, register int (*c) (const void *, const void *))
{
register char *b, *m;
register int p;
b = (char *) v;
while (n)
{
m = b + ((n >> 1) * z);
p = __funcall ((*c), (k, m));
if (!p)
return (m);
if (p > 0)
b = m + z, n = n - (n >> 1) - 1;
else
n = (n >> 1);
}
return (0);
}